iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 15
0
自我挑戰組

前端我來了 - 30天 JavaScript 從無到有 系列 第 15

[30天 JavaScript 從無到有 Day 15] 執行環境與執行堆疊

  • 分享至 

  • xImage
  •  

程式碼如何執行 (斜線部分為 JavaScript Enngine)
Code -> Parser (Abstract Syntax Tree 抽象語法樹)
-> Conversion to Machine Code (Machine Code 機器語言) -> Runs

執行環境(Execution Context) 儲存變數以及程式執行的環境
第一個(預設)建立的執行環境:全域執行環境(Global execution context)

執行環境建立過程 :
Creation Phase 創造階段

  1. Creation of Variable Object (VO)
  2. Creation of scope chain
  3. Determine value of the 'this' variable -> 環境創立完成

Execution Phase 執行階段
由上往下、逐行執行程式碼(跳過函式裡的內容)
如果無任何呼叫函式 -> 只會創建 全域執行環境

Hoisting 存於全域執行環境概念
Function -> 已宣告,但內容未讀
Variable -> 已宣告,尚為 undefined

範例:

var name = 'sui'; // Global execution context

function first(){ // Global execution context
    var age = 22; // Execution context first()
    second();     // Execution context second()
}

function second(){ // Global execution context
    var isMarried = false; Execution context second()
}

function first() // Execution context first()

在以上程式碼中,創立了3個執行環境,形成 執行堆疊 (Execution stack)

Execution context second()
Execution context first()
Global execution context

而在 second() 執行完後,執行堆疊則會呈現為

Execution context first()
Global execution context

以此類堆,return 後 執行環境自動 pop 掉,最後剩下全域執行環境
今天內容主要為一些了解一些較底層的概念,明天進入實作~


新手練功中, 歡迎指教、點評~
課程 : https://www.udemy.com/course/the-complete-javascript-course/
來源 : https://medium.com/%E9%AD%94%E9%AC%BC%E8%97%8F%E5%9C%A8%E7%A8%8B%E5%BC%8F%E7%B4%B0%E7%AF%80%E8%A3%A1/%E6%B7%BA%E8%AB%87-javascript-%E5%9F%B7%E8%A1%8C%E7%92%B0%E5%A2%83-2976b3eaf248


上一篇
[30天 JavaScript 從無到有 Day 14] JavaScript 歷史
下一篇
[30天 JavaScript 從無到有 Day 16] Hoisting practice
系列文
前端我來了 - 30天 JavaScript 從無到有 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言